package com.atguigu.gmall.product.service;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ManageService {

    //查询所有一级分类数据的集合
    List<BaseCategory1> getCategory1();

    //通过一级分类ID 查询二级分类数据的集合

    List<BaseCategory2> getCategory2(Long category1Id);

    // 通过二级分类ID 查询三级分类数据的集合

    List<BaseCategory3> getCategory3(Long category2Id);

    //根据分类id获取平台属性数据
    List<BaseAttrInfo> getAttrInfoList(Long category1Id, Long category2Id, Long category3Id);

    //新增属性
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //根据attrId 查询平台属性对象
    BaseAttrInfo getAttrInfo(Long attrId);

    //spu分页查询
    IPage<SpuInfo> getSpuInfoPage(Page<SpuInfo> spuInfoPage, SpuInfo spuInfo);

    //获取销售列表
    List<BaseSaleAttr> getBaseSaleAttrList();

    //保存平台属性
    void saveAttrInfo(SpuInfo spuInfo);

    //获取商品的图片
    List<SpuImage> getSpuImageList(Long spuId);

    //获取销售属性
    List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);

    //大保存sku属性
    void saveSkuInfo(SkuInfo skuInfo);

    //sku分页查询
    IPage<SkuInfo> getPage(Page<SkuInfo> pageParam);

    //上架
    void onSale(Long skuId);

    //下架
    void cancelSale(Long skuId);


    //根据skuid获取商品属性列表 + 图片列表
    SkuInfo getSkuInfo(Long skuId);

    //通过skuid获取最新价格
    BigDecimal getSkuPrice(Long skuId);

    //通过三级id获取分类信息
    BaseCategoryView getCategoryViewByCategory3Id(Long category3Id);

    //根据spuId，skuId 查询销售属性集合
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId);

    //根据spuId 查询 Map 的集合属性
    Map getSkuValueIdsMap(Long spuId);

    //根据spuId来查询海报数据
    List<SpuPoster> findSpuPosterBySpuId(Long spuId);


    //根据skuId来获取平台属性数据
    List<BaseAttrInfo> getAttrList(Long skuId);

    //获取到所有的分类信息
    List<JSONObject> getCategoryList();

    //根据品牌id获取品牌信息
    BaseTrademark getTrademark(Long tmId);

}
